<!DOCTYPE html>
<html class="client-nojs vector-feature-night-mode-disabled vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-sticky-header-enabled" lang="en" dir="ltr"><head>
<meta charset="UTF-8">
<title>Embedded controller</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://en.wikipedia.org/wiki/Embedded_controller"> <link href="./mw/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/user.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./mw/site.styles.css">
<link rel="stylesheet" type="text/css" href="./mw/noscript.css">
<link rel="stylesheet" type="text/css" href="./footer.css">
<link rel="stylesheet" type="text/css" href="./vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Embedded_controller rootpage-Embedded_controller skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">
<span id="openzim-page-title" class="mw-page-title-main"><span class="mw-page-title-main">Embedded controller</span></span>
</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr">
<style data-mw-deduplicate="TemplateStyles:r1305433154">
/* start https://en.wikipedia.org/ */
.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}@media print{body.ns-0 .mw-parser-output .ambox{display:none!important}}
/* end https://en.wikipedia.org/ */
</style><style data-mw-deduplicate="TemplateStyles:r1248332772">
/* start https://en.wikipedia.org/ */
.mw-parser-output .multiple-issues-text{width:95%;margin:0.2em 0}.mw-parser-output .multiple-issues-text>.mw-collapsible-content{margin-top:0.3em}.mw-parser-output .compact-ambox .ambox{border:none;border-collapse:collapse;background-color:transparent;margin:0 0 0 1.6em!important;padding:0!important;width:auto;display:block}body.mediawiki .mw-parser-output .compact-ambox .ambox.mbox-small-left{font-size:100%;width:auto;margin:0}.mw-parser-output .compact-ambox .ambox .mbox-text{padding:0!important;margin:0!important}.mw-parser-output .compact-ambox .ambox .mbox-text-span{display:list-item;line-height:1.5em;list-style-type:disc}body.skin-minerva .mw-parser-output .multiple-issues-text>.mw-collapsible-toggle,.mw-parser-output .compact-ambox .ambox .mbox-image,.mw-parser-output .compact-ambox .ambox .mbox-imageright,.mw-parser-output .compact-ambox .ambox .mbox-empty-cell,.mw-parser-output .compact-ambox .hide-when-compact{display:none}
/* end https://en.wikipedia.org/ */
</style>
<p>An <b>Embedded Controller</b> (<b>EC</b>) is a <a href="Microcontroller" title="Microcontroller">microcontroller</a> in <a href="Computer" title="Computer">computers</a> that handles various system tasks. Now it is usually merged with <a href="Super_I/O" title="Super I/O">Super I/O</a>, especially on mobile platforms (such as laptops).
</p>
<meta property="mw:PageProp/toc">
<div class="mw-heading mw-heading2"><h2 id="Tasks">Tasks</h2></div>
<p>An embedded controller can have the following tasks:
</p>
<ul><li>Receiving and processing signals from the keyboard<sup id="cite_ref-ps2kbc_1-0" class="reference"><a href="#cite_note-ps2kbc-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> and the touchpad (including touchpad disable)</li>
<li>Other buttons and switches (e.g., power button, laptop lid switch (received from hall sensor))<sup id="cite_ref-amikey_2-0" class="reference"><a href="#cite_note-amikey-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup></li>
<li>Controlling access to the <a href="A20_line" title="A20 line">A20 line</a><sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup></li>
<li>Thermal measurement (CPU, GPU, Motherboard) and response including <a href="Fan_control" class="mw-redirect" title="Fan control">fan control</a>, <a href="Dynamic_frequency_scaling" title="Dynamic frequency scaling">CPU and GPU throttling</a>, and emergency shutdown in response to rising temperatures</li>
<li>Power management, including control <a href="Voltage_regulator_module" title="Voltage regulator module">voltage regulator module</a></li>
<li>Controlling indicator <a href="Light-emitting_diode" title="Light-emitting diode">LEDs</a> (e.g. caps lock, scroll lock, num lock, battery, ac, power, wireless LAN, sleep)</li>
<li>Managing the <a href="Battery_(electricity)" class="mw-redirect" title="Battery (electricity)">battery</a> charger and the battery<sup id="cite_ref-amikey_2-1" class="reference"><a href="#cite_note-amikey-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup></li>
<li>Allowing remote diagnostics and remediation over the network</li>
<li>Performing software-requested CPU reset<sup id="cite_ref-ps2kbc_1-1" class="reference"><a href="#cite_note-ps2kbc-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup></li>
<li>Controlling the <a href="Watchdog_timer" title="Watchdog timer">watchdog timer</a><sup id="cite_ref-amikey_2-2" class="reference"><a href="#cite_note-amikey-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup></li>
<li>System Management Interrupt (entry to <a href="System_Management_Mode" title="System Management Mode">System Management Mode</a>)</li>
<li><a href="Bluetooth" title="Bluetooth">Bluetooth</a> toggle</li>
<li>Controlling display brightness (built-in LCD or OLED)</li>
<li><a href="USB" title="USB">USB</a> OC (overcurrent) (USB disable)</li>
<li>Controlling RGB lighting</li>
<li><a href="Wake-on-LAN" title="Wake-on-LAN">Wake-on-LAN</a></li>
<li>Debug Card Interface (Enables repair centers to monitor the boot process with a special device in an attempt to fix problems)</li>
<li>SCI from the Embedded Controller to inform the ACPI driver (in the <abbr title="Operating system">OS</abbr>) of an ACPI Event</li></ul>
<p>As a core system component, the embedded controller is always on when power is supplied to the mainboard. To communicate with the main computer system, several forms of communication can be used, including <a href="Advanced_Configuration_and_Power_Interface" class="mw-redirect" title="Advanced Configuration and Power Interface">ACPI</a>, <a href="SMBus" class="mw-redirect" title="SMBus">SMBus</a>, or <a href="Shared_memory_(interprocess_communication)" class="mw-redirect" title="Shared memory (interprocess communication)">shared memory</a>.
</p><p>The embedded controller has its own <a href="Random-access_memory" title="Random-access memory">RAM</a>, independent of that used by the main computer system, and often its own <a href="Flash_ROM" class="mw-redirect" title="Flash ROM">flash ROM</a> on which the controller's <a href="Software" title="Software">software</a> is stored. Many BIOS updates also include upgrades for the embedded controller firmware.
</p><p>An embedded controller is sometimes known as a "Keyboard Controller BIOS", which comes from the fact that the embedded controller evolved from the keyboard controller and often still is used as a keyboard controller. Even today, an ACPI embedded controller communicates with the CPU by using the same I/O ports that keyboard controllers used in the past.
</p>
<div class="mw-heading mw-heading2"><h2 id="Ergonomics">Ergonomics</h2></div>
<p>Although the embedded controller is very "deep" in the system, it is important to the user because it performs functions such as fan control and thermal management. Computer systems such as laptops often produce large amounts of heat which must be dissipated. This is typically done by activating a fan to blow air over the components that are producing heat; the fan is not simply turned on or off, but is driven at high speed by the embedded controller for a short time and then left running at low speed until the temperature has decreased sufficiently. Such a control scheme can be uncomfortable from an ergonomic point of view, as the change in fan speed is noticeable to the user, especially if this occurs regularly and if the fan is clearly audible.
</p><p>To prevent this, some embedded controllers are designed to run the fans at a constant speed over a larger range of temperatures and will only increase fan speed when the system is close to overheating. In this case, the ergonomics of the system are improved because the fan is quieter, as it is controlled to rotate at a lower speed and does not change speed as often. However, when the temperature does cross the controller's threshold, it will take much longer to reduce the temperature to safe levels.
</p><p>To change the fan control policy, updates to the embedded controller's firmware are usually necessary.
</p>
<div class="mw-heading mw-heading2"><h2 id="Common_Brands">Common Brands</h2></div>
<ul><li><a href="Nuvoton" title="Nuvoton">Nuvoton</a><sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup></li>
<li>ITE tech. Inc.</li>
<li><a href="Microchip_Technology" title="Microchip Technology">Microchip Technology</a><sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup></li></ul>
<div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2></div>
<ul><li><a href="Super_I/O" title="Super I/O">Super I/O</a></li>
<li><a href="Low_Pin_Count" title="Low Pin Count">Low Pin Count</a> (LPC)</li>
<li><a href="Serial_Peripheral_Interface" title="Serial Peripheral Interface">Serial Peripheral Interface</a> (SPI)</li></ul>
<div class="mw-heading mw-heading2"><h2 id="References">References</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1239543626">
/* start https://en.wikipedia.org/ */
.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}
/* end https://en.wikipedia.org/ */
</style><div class="reflist">
<div class="mw-references-wrap"><ol class="references">
<li id="cite_note-ps2kbc-1"><span class="mw-cite-backlink">^ <a href="#cite_ref-ps2kbc_1-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-ps2kbc_1-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">
/* start https://en.wikipedia.org/ */
.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("./mw/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("./mw/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("./mw/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("./mw/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}
/* end https://en.wikipedia.org/ */
</style><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20160304080022/http://www.computer-engineering.org/ps2keyboard/">"The PS/2 Keyboard Interface"</a>. Archived from <a rel="nofollow" class="external text" href="http://www.computer-engineering.org/ps2keyboard/">the original</a> on 2016-03-04.</cite></span>
</li>
<li id="cite_note-amikey-2"><span class="mw-cite-backlink">^ <a href="#cite_ref-amikey_2-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-amikey_2-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-amikey_2-2"><sup><i><b>c</b></i></sup></a></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20160304032338/http://www.ami.com/ami_downloads/Embedded_Controller_Data_Sheet.pdf">"AMI Embedded Controller (EC) Firmware Solution"</a> <span class="cs1-format">(PDF)</span>. Archived from <a rel="nofollow" class="external text" href="https://www.ami.com/ami_downloads/Embedded_Controller_Data_Sheet.pdf">the original</a> <span class="cs1-format">(PDF)</span> on 2016-03-04<span class="reference-accessdate">. Retrieved <span class="nowrap">2014-12-28</span></span>.</cite></span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-3">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.win.tue.nl/~aeb/linux/kbd/A20.html">"A20 - a pain from the past"</a>.</cite></span>
</li>
<li id="cite_note-4"><span class="mw-cite-backlink"><b><a href="#cite_ref-4">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.nuvoton.com/products/cloud-computing/ec/">"EC (Embedded Controller)"</a>. <i>Nuvoton</i><span class="reference-accessdate">. Retrieved <span class="nowrap">19 October</span> 2023</span>.</cite></span>
</li>
<li id="cite_note-5"><span class="mw-cite-backlink"><b><a href="#cite_ref-5">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.microchip.com/en-us/products/embedded-controllers-and-super-io/embedded-and-keyboard-controllers">"Embedded Controllers and Keyboar Controllers"</a>. <i>Microchip Technology</i><span class="reference-accessdate">. Retrieved <span class="nowrap">19 October</span> 2023</span>.</cite></span>
</li>
</ol></div></div>
<div class="mw-heading mw-heading2"><h2 id="External_links">External links</h2></div>
<ul><li><a rel="nofollow" class="external text" href="http://mjg59.livejournal.com/117880.html">Matthew Garrett: The ACPI Embedded Controller</a></li>
<li><a rel="nofollow" class="external text" href="http://www.coreboot.org/Embedded_controller">coreboot: List of embedded controllers as they are used in laptops</a></li></ul></div><!--htdig_noindex--><div><div class="zim-footer">
This article is issued from <a class="external text" title="Last edited on 2025-05-13" href="https://en.wikipedia.org/wiki/?title=Embedded_controller&oldid=1290149448">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
</body></html>